home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 23 / CU Amiga - Super CD-ROM 23 (June 1998).iso / CUCD / Programming / In_Go / locale / help / deutsch / In_Go.help
Encoding:
Text File  |  1998-02-01  |  10.6 KB  |  220 lines

  1. 14 In_Go, der interaktive Reassembler    Version 4.0 International
  2. 64 © Februar 1998, Ingo Molter
  3. 14 TESTVERSION keine Garantie, keine Gewährleistung.
  4. 10
  5. 41INSTALLATION
  6. 10 Das File In_Go__Structure sollte entweder im gleichen Verzeichnis
  7. 10 wie In_Go zu finden sein, oder ins s: Verzeichnis kopiert werden
  8. 10 Der Speicher im F1 Requester sollte mindestens so groß wie das
  9. 10 zu bearbeitetnde Quellfile sein (auch für Referenzen !).
  10. 41 Tips:
  11. 10Nach erstmaligem Laden muß die geladene Quelle reassembliert werden.
  12. 10 Zum fehlerfreien Reassemblieren müssen ALLE indirekten und relativen
  13. 10 Aufrufe erkannt sein ! Dies ist bei manchen Programmen unmöglich !
  14. 10Kleinere linkbaren Objectfiles können auch geladen werden, mit gewissen
  15. 10 Einschränkungen allerdings: In_Go unterstützt nur EINEN Labelnamen
  16. 10 je Adresse. Bei Objectfilecollectionen wie zum Beispiel `Amigalib`
  17. 10 stimmt die Hunkrelation nicht ! Auch Objectfiles müssen disassembliert
  18. 10 werden, ( Zeilenkursor auf Codebeginn dann Rechte Amiga +j drücken ).
  19. 10Den Symbolischen Prozessor können Sie Unterstützen durch die Namensgebung
  20. 10 von Zeigern. `Ein_Screen` wird als Zeiger auf eine Screen Struktur
  21. 10 interpretiert. Die Namensgebung nach dem `_` sollte sich dabei
  22. 40 an die Namensgebung der Strukturen im `Inhalt` Anzeiger halten.
  23. 10 Bei Sprüngen in der Anzeige geht der Symbolische Prozessor oft von
  24. 10 falschen Inhalten aus. Diese Fehler sind beim Reassemblieren unkritisch !
  25. 10 Die Interpretation der Basisregister wird nur durch die Bereiche
  26. 10 im F3 Requester festgelegt !
  27. 10Files, Objectfiles, Tasks, Ram und Rom können verarbeitet werden.
  28. 10 Die Bearbeitung erfolgt dabei vollkommen parallel zur geladenen Quelle.
  29. 10 Dies ermöglicht auch das Bearbeiten von laufende Tasks.
  30. 10Allgemein wird zwischen zwei Datenarten unterschieden:
  31. 10 - Code: erkannte Instruktionen des eingestellten Processors.
  32. 10 - Data: alles andere, auch nicht reassemblierter Code !
  33. 10 Beim Disassemblieren wird eine Referenzliste angelegt,
  34. 10 welche die Erzeugung lokaler Labeln ermöglicht.
  35. 10Lokale Labels unterstützen auch die Erzeugung von Amigaguide files,
  36. 10 Ihrer Source, die an Transparenz kaum noch zu Übertreffen sind.
  37. 10Nach dem Laden Option `finde typische Amiga Strings` ausführen.
  38. 10 Basen können auch halbautomatisch gefunden werden, jedoch
  39. 10 eventuell wieder deaktiviert werden (Im F3 Requester).
  40. 10
  41. 10Im `.In_Go` File werden Labeln, Bereiche, Namen usw. abgespeichert.
  42. 10 Durch `Save .In_Go file ` kann auch eine Art UNDO erzeugt werden.
  43. 10 Dann kann durch erneutes Laden der alte Zustand wiederhergestellt werden.
  44. 10
  45. 10Screengröße, Speicher, Schriftart und Farben der Hauptanzeige können
  46. 10 Ihren Bedürfnissen angepasst werden.
  47. 10
  48. 41Andere Fähigkeiten:
  49. 10
  50. 10Komentare kontrollieren die Ausgabe:
  51. 10  - `@` sendet align.l oder Synonym (¹)(³)
  52. 10  - `<` Schaltet Ausgabe Aus (¹)(³)
  53. 10  - `>` Schaltet Ausgabe Ein (¹)(³)
  54. 10  - `(` Schaltet alle Optimierungen Aus. (¹)(³)
  55. 10  - `(` Schaltet alle Optimierungen Ein. (¹)(³)
  56. 10  - `[` Schaltet möglicherweise fehlergenerierende Optimierung Aus (¹)(³)
  57. 10  - `]` Schaltet möglicherweise fehlergenerierende Optimierung Ein (¹)(³)
  58. 10  - `{` Schaltet Indirekt(ax) Aus (¹)(³)
  59. 10  - `}` Schaltet Indirekt(ax) Ein (¹)(³)
  60. 10     Die mit (¹) bezeichneten Optionen werden nur bei der
  61. 10     Ausgabe als Textfile berücksichtigt !
  62. 10     Die mit (³) bezeichneten Optionen müssen alleine
  63. 10     als Komentar stehen (1 Zeichen !).
  64. 10  - `~#` erzwingt die Interpretation als Library Nr.1
  65. 10      # Die Librarynummer ist im Reassemblerhilfsrequester sichtbar.
  66. 10  - `~` für sich allein, untertrückt die Libraryinterpretation;
  67. 10        dies ist nur in der jeweiligen Zeile wirksam.
  68. 10  - `[d0]=` bis `[A6]=` + Name fügt Name in den symbolischen
  69. 10      Processor. In der vorliegenden Version hat dies jedoch nur
  70. 10      auf die Interpretation von Strukturen auswirkung.
  71. 10
  72. 41Lernen:
  73. 10           Original Zeile vor lernen       Nach dem lernen
  74. 10           ---------------------------------------------------------
  75. 10   Data    Lxxx: dc.b `Name`,0             Name_T: dc.b `Name`,0
  76. 10           Lxxx: dc.b `Name1`,10            Name1_T: dc.b `Name`,10
  77. 10           Lxxx: dc.b `Name2`               Name2_T: dc.b `Name`
  78. 10   Aufruf  Lxxx: .......                    yyy_I:   .......
  79. 10                 jsr _LVOyyy(A6)                     jsr _LVOyyy(A6)
  80. 10                 .......                             .......
  81. 10                 rts                                 rts
  82. 10Zum richtigen `lernen` von Library Aufrufen muß die Interpretation
  83. 10 angezeigt werden. Dazu müssen die Basen festgelegt werden.
  84. 10 Dazu klicken Sie in der Hauptanzeige den entsprechenden Namen.
  85. 10 Im Reassemblerhilfsrequester können Sie durch Klicken die Base
  86. 10 festlegen. Das Editieren erfolgt immer in Richtung der Scrollbox
  87. 10
  88. 10Wenn die Libraryaufrufe zwei Einsprünge besitzen, entsprechende
  89. 10   Option im Menü einstellen.
  90. 10   Lernen erfolgt nur im sichtbaren Bereich !
  91. 10
  92. 41Über das Tabellen einlesen:
  93. 10
  94. 10 Labeltype: Welcher Labeltyp soll erzeugt werden ?
  95. 10
  96. 10 `Data`    Normales Label `L`
  97. 10 `Sprung`: Das Label wird Reassembler Startadresse. `JL`
  98. 10
  99. 10
  100. 41Verkettete Listen mit wechselnder Länge der Elemente:
  101. 10
  102. 10 Eine Liste in der Form : ` Kopf + Inhalt  + Zusatz` kann eingelesen
  103. 10 werden wenn ` Kopf ` und ` Zusatz ` konstante Länge haben !
  104. 10 Eines der Kopf-Bytes muß die Länge des Inhalts anzeigen.
  105. 10 Das längeanzeigende Byte muß nicht das erste im Kopf sein
  106. 10 Falls notwendig kann die Länge inkrementiert (+1) werden
  107. 41Reassembler preferences
  108. 10
  109. 10Unterdrücke Labelerzeugung wenn:
  110. 10 `Pea long`    pea Langgwort
  111. 10 `#log`    # Unmittelbar and/or/eor/ (logic) Langwort
  112. 10 `#eff`    # Unmittelbar in effectiven Adressen
  113. 10 `Long`    alle Langwortlabel
  114. 10Beim Einlesen von Files werden alle Langwortaufrufe erkannt.
  115. 10 Bei Tasks existieren ja keine Reloctabellen ! Um nun das Einlesen von
  116. 10 zufällig in die Segmente zeigenden Vectoren zu unterbinden, kann mit
  117. 10 Hilfe dieser Schalter eine Labelcreation verhindert werden.
  118. 10Indirekte Adressierung:
  119. 10 Bei Speicherzugriffen in der Form `Word(Ax)` kann auch dieser
  120. 10 Zugriff erkannt werden wenn die Basis eine Konstannte innerhalb
  121. 10 der Segmente ist. Dabei kann auch noch ein Word dazu addiert
  122. 10 werden. Meist ist nur ein gefundener Wert richtig.
  123. 10 Bei `C` Programmen  A4 eventuell + $7ffe wenn außerhalb Segment
  124. 10Pseudo Adressierung :
  125. 10 Auf Stackbereiche oder dynamische Speicherbereiche wird oft
  126. 10 ebenfalls in der Form `Word(Ax)` zugegriffen
  127. 10 Da diese Bereiche jedoch außerhalb der Segmente liegen
  128. 10 können Pseudobereiche angelegt werden, welche dann dennoch eine
  129. 10 Labelcreation zulassen. Sprünge werden nicht unterstützt.
  130. 10 Typisch für diese Form der Adressierung sind Link/Unlink Module
  131. 10 die Ihre lokalen Variablen auf dem Stack anlegen.
  132. 10 Das Finden solcher Bereiche erfolgt weitgehend automatisch
  133. 10 nach Anklicken der Option finde Link Bereiche
  134. 41Optimierungen 68000 -> 68020 im Quelltext
  135. 10- ext.b gefolgt von ext.w wird zu extb,l : Spart 2 Byte
  136. 10- Jsr/jmp wird zu Bsr.l/Jsr.l : Spart den Reloc_32 Eintrag also 4 Byte
  137. 10- asl.x (1,2,3),Dx oder add Dx,Dx gefolgt von einem Zugriff in
  138. 10  der Form bb(Ay,Dx) wird zu (bb,Ay,Dx*sk). Wird später nochmal
  139. 10  auf Dx zugegriffen generiert diese Optimierung Fehler (¹).
  140. 10- move X,Y gefolgt von move (Y),Z oder move Z,(Y) wird zu
  141. 10  move ([X]),Z oder move Z,([X]). Wird später auf Y zugegriffen
  142. 10  generiert diese Optimierung Fehler (¹).
  143. 10  Die mit (¹) versehenen Optimierungen können im erzeugte File (!)
  144. 10  durch Komentare Ein- oder Ausgeschaltet werden.
  145. 41 Optimierungungen mit Hilfe von Macros
  146. 10  Gängige Befehlsequenzen werden durch Macros ersetzt.
  147. 10  Stackoperationen können zusammengefaßt werden.
  148. 10  Dies kann auch die Übersichtlichkeit erhöhen !.
  149. 10
  150. 41 Interruptlabel
  151. 10  Unterprogramme die mit jsr/bsr Label aufgerufen werden und ihre
  152. 10  Returnadresse vom Stack entfernen erzeugen Fehler beim reassemblieren.
  153. 10  Dann ist eine Reassemblierung HINTER jsr/bsr Label wenig sinnvoll.
  154. 10  Im Edit Menü kann ein Label zum Interruptlabel umgeformt werden.
  155. 10  Die Reassemblierung wird dann NICHT hinter jsr/bsr Label fortgeführt.
  156. 10  Das Label muß dabei in der Aktuellen Zeile stehen ( LABEL: ) !
  157. 10
  158. 41Status in der Hauptanzeige:
  159. 41
  160. 10 B : Code-Bereiche             L : Label
  161. 10 N : Eigene Namen              Z : Code Zeilen
  162. 10 J : Jumptabellen              C:  Komentare
  163. 10 l : Langwortkonstannten       S: Script Zeilen
  164. 10 X : Referenzen
  165. 41
  166. 41Wichtige Eingabe Befehle
  167. 41
  168. 10 `d` Umschalten zwischen Data als Code oder als Data
  169. 10 `p` Umschalten zwischen den verschiedenen Adressanzeigen
  170. 10 `a` Anzeige ab Label mit zwei Möglichkeiten:
  171. 10     - Namen Sortiert nach ASCII
  172. 10     - Label oder Namen nach absoluten Adressen
  173. 10 `r` Anzeige ab Referenz Zeilenlabel Aktuellen Zeile:
  174. 10     Alle Sprung Referenzen stehen zur Auswahl
  175. 10 `t` Aufruf des Tabellen Requesters, dabei wird die Adresse
  176. 10     der aktuellen Zeile übergeben.
  177. 10 `o`  Umschalten von Optimierung Ein/Aus in der Anzeige
  178. 10 `esc` verlassen von allen Requestern.
  179. 10 `Space` Startet den Reassembler .
  180. 10 Durch Anklicken lassen sich im Laderequester die Segmente definieren.
  181. 10 Dies ist insbesondere bei Tasks notwendig !.
  182. 41
  183. 41Fehlersuche & In_Go
  184. 41
  185. 10In_Go bietet:
  186. 10
  187. 10 - Alle Segmente (Hunks) sichtbar.
  188. 10 - Ausführbare Programme können mit Labelnamen versehen werden.
  189. 10 - Adresslage farbmarkiert im `Inhalte` requester
  190. 10 - Reloc_32 Adressen haben ein `A` im erzeugten Namen.
  191. 10 - Findet selbstmodifizierenden Code
  192. 10 - Entdeckt nicht erlaubte Instruktionen je nach (Ko) Processor.
  193. 10 - Automatisches Tabelleneinlesen der gebräuchlichsten Tabellen.
  194. 10 - Einlesen von verketteten Listen mit unterschiedlicher Teillänge.
  195. 10 - Dekodierung indirekter Adressierungen via A3-A6 .
  196. 10 - Optimierungen 68000 --> 68020 möglich.
  197. 10 - Kann Macros für Entscheidungen (tst,cmp) erzeugen.
  198. 10 - Kann Macros für Procedureanfang und -ende  erzeugen.
  199. 10 - Kann Macros für mehrfache Stackoperationen erzeugen.
  200. 10 - Viele typische Amiga Konstanten implementiert.
  201. 10 - Indirekt-indirekte Interpretation von Zeiger auf Langworte und Rts
  202. 10 - Pseudolabeln für lokale Variable.
  203. 10 - Primitiver symbolischer Processor implementiert.
  204. 10 - Kann ein Amiga-Guide-File Ihrer Quelle erzeugen, welches an
  205. 10   Transparenz kaum noch zu übertreffen ist !
  206. 10 - Kann ©Enforcer-Hits mit ©Segtracker lokalisieren.
  207. 10 - Kann linkbare Objectfiles editieren und dissasemblieren.
  208. 10 - Kann alle Referenzen auf Zeilenadresse anzeigen.
  209. 10 Updates:  Sende DM 10.- oder 10 Dollar an
  210. 10           Ingo Molter
  211. 10           Dunzweilerstr.42,
  212. 10           D-66903 Dittweiler (Germany)
  213. 10           Tel. 06386 1312
  214. 10Senden Sie auch Berichte usw. ich mag viel Post!
  215. 01 Vielen Dank an:
  216. 01 Mathias Schroeder, Berlin
  217. 01 Martin Apel (Bonn, K`lautern), Author des Adis Reassemblers
  218. 01 Karl Roesel (K`lautern).
  219.  
  220.